package leetcode101.tree;

/**
 * @author Synhard
 * @version 1.0
 * @class Codae20
 * @description 530. 二叉搜索树的最小绝对差
 * 给你一棵所有节点为非负值的二叉搜索树，请你计算树中任意两节点的差的绝对值的最小值。
 *
 *
 * 示例：
 *
 * 输入：
 *
 *    1
 *     \
 *      3
 *     /
 *    2
 *
 * 输出：
 * 1
 *
 * 解释：
 * 最小绝对差为 1，其中 2 和 1 的差的绝对值为 1（或者 2 和 3）。
 *
 * 提示：
 *
 * 树中至少有 2 个节点。
 *
 * @tel 13001321080
 * @email 823436512@qq.com
 * @date 2021-06-26 11:14
 */
public class Code20 {

    public static void main(String[] args) {

    }

    static int min = Integer.MAX_VALUE;
    static int preVal = Integer.MAX_VALUE;

    public int getMinimumDifference(TreeNode root) {
        dfs(root);
        return min;
    }

    private static void dfs(TreeNode root) {
        if (root == null) {
            return;
        }
        dfs(root.left);
        min = Math.min(min, root.val - preVal);
        preVal = root.val;
        dfs(root.right);
    }

}
